///******************************************************************************* // * Copyright (c) 2000, 2006 IBM Corporation and others. // * All rights reserved. This program and the accompanying materials // * are made available under the terms of the Eclipse Public License v1.0 // * which accompanies this distribution, and is available at // * http://www.eclipse.org/legal/epl-v10.html // * // * Contributors: // * IBM Corporation - initial API and implementation // *******************************************************************************/ //package org.eclipse.ui.tests.multipageeditor; // //import java.io.ByteArrayInputStream; //import java.util.Collection; // //import org.eclipse.core.resources.IFile; //import org.eclipse.core.resources.IProject; //import org.eclipse.core.resources.IWorkspace; //import org.eclipse.core.resources.ResourcesPlugin; //import org.eclipse.core.runtime.CoreException; //import org.eclipse.jface.text.TextSelection; //import org.eclipse.jface.viewers.IPostSelectionProvider; //import org.eclipse.jface.viewers.ISelection; //import org.eclipse.jface.viewers.ISelectionChangedListener; //import org.eclipse.jface.viewers.ISelectionProvider; //import org.eclipse.jface.viewers.SelectionChangedEvent; //import org.eclipse.swt.widgets.Control; //import org.eclipse.ui.IEditorPart; //import org.eclipse.ui.IWorkbenchPage; //import org.eclipse.ui.PartInitException; //import org.eclipse.ui.contexts.IContextService; //import org.eclipse.ui.ide.IDE; //import org.eclipse.ui.tests.harness.util.UITestCase; // ///** // * <p> // * Test that the MultiPageEditorPart is acting on events and changes. These // * tests are for making sure that selection events and page change events are // * handled. // * </p> // * <p> // * It also checks for changing Contexts. // * </p> // * // * @since 3.2 // */ //public class MultiVariablePageTest extends UITestCase { // // private static final String FILE_CONTENTS = "#section01\nsection 1\n#section02\nsection 2\nwith info\n#section03\nLast page\n"; // // private static final String MTEST01_FILE = "mtest01.multivar"; // // private static final String MULTI_VARIABLE_PROJ = "MultiVariableTest"; // // private int fPostCalled; // // public MultiVariablePageTest(String testName) { // super(testName); // } // // /** // * Make sure that setting the active page programmatically calls // * pageChanged(int) on the way. This method is overridden in a lot of // * editors to provide their functionality on page changes. // * // * @throws Throwable // */ // public void testSetActivePage() throws Throwable { // // Open a new test window. // // Create and open a blurb file. // IEditorPart part = openMultivarFile(); // // MultiVariablePageEditor editor = (MultiVariablePageEditor) part; // // editor.setPage(1); // ISelection selection = editor.getEditorSite().getSelectionProvider() // .getSelection(); // TextSelection text = (TextSelection) selection; // // when we change to the second page, the selection should be // // updated. // assertEquals("#section02", text.getText()); // // editor.setPage(0); // selection = editor.getEditorSite().getSelectionProvider() // .getSelection(); // text = (TextSelection) selection; // // when we change back to the first page, the selection should be // // updated. // assertEquals("#section01", text.getText()); // } // // /** // * Make sure that removing a page that is a Control (instead of an editor) // * disposes of the Control immediately. // * // * @throws Throwable // */ // public void testRemovePage() throws Throwable { // // Open a new test window. // // Create and open a blurb file. // IEditorPart part = openMultivarFile(); // // MultiVariablePageEditor editor = (MultiVariablePageEditor) part; // editor.addLastPage(); // Control c = editor.getLastPage(); // assertFalse(c.isDisposed()); // editor.removeLastPage(); // assertTrue(c.isDisposed()); // // c = editor.getTestControl(2); // assertFalse(c.isDisposed()); // editor.removeLastPage(); // assertTrue(c.isDisposed()); // editor.setPage(0); // editor.getSite().getPage().activate(editor); // } // // /** // * Now the MPEP site's selection provider should by default support post // * selection listeners. Since the MVPE is based on Text editors, we should // * be getting the post selection events when we change pages. // * // * @throws Throwable // * on error cases // */ // public void testPostSelection() throws Throwable { // // Open a new test window. // // Create and open a blurb file. // IEditorPart part = openMultivarFile(); // // MultiVariablePageEditor editor = (MultiVariablePageEditor) part; // ISelectionProvider sp = editor.getEditorSite().getSelectionProvider(); // assertTrue(sp instanceof IPostSelectionProvider); // // IPostSelectionProvider postProvider = (IPostSelectionProvider) sp; // // fPostCalled = 0; // ISelectionChangedListener listener = new ISelectionChangedListener() { // public void selectionChanged(SelectionChangedEvent event) { // ++fPostCalled; // } // }; // // try { // postProvider.addPostSelectionChangedListener(listener); // editor.setPage(1); // assertEquals(1, fPostCalled); // editor.setPage(0); // assertEquals(2, fPostCalled); // } finally { // postProvider.removePostSelectionChangedListener(listener); // } // } // // private IEditorPart openMultivarFile() throws CoreException, // PartInitException { // IWorkbenchPage page = openTestWindow().getActivePage(); // IWorkspace workspace = ResourcesPlugin.getWorkspace(); // IProject testProject = workspace.getRoot().getProject( // MULTI_VARIABLE_PROJ); // if (!testProject.exists()) { // testProject.create(null); // } // testProject.open(null); // IFile multiFile = testProject.getFile(MTEST01_FILE); // if (!multiFile.exists()) { // multiFile.create( // new ByteArrayInputStream(FILE_CONTENTS.getBytes()), true, // null); // } // // // I can't be bothered to use the ID, but this editor has an // // extention registered against it. // IEditorPart part = IDE.openEditor(page, multiFile); // assertTrue("Should have opened our multi variable page editor", // part instanceof MultiVariablePageEditor); // return part; // } // // /** // * Make sure that contexts are activated-deactivated by pages changes and // * other editors. // * // * @throws Throwable // * on error // */ // public void testContextActivation() throws Throwable { // IContextService globalService = (IContextService) getWorkbench() // .getService(IContextService.class); // // // Open a new test window. // // Create and open a blurb file. // IEditorPart part = openMultivarFile(); // // MultiVariablePageEditor editor = (MultiVariablePageEditor) part; // checkActiveContext(globalService, ContextTextEditor.CONTEXT_ID, false); // checkActiveContext(globalService, ContextTextEditor.TEXT_CONTEXT_ID, // true); // // editor.setPage(1); // checkActiveContext(globalService, ContextTextEditor.CONTEXT_ID, false); // checkActiveContext(globalService, ContextTextEditor.TEXT_CONTEXT_ID, // true); // // editor.setPage(2); // checkActiveContext(globalService, ContextTextEditor.CONTEXT_ID, true); // checkActiveContext(globalService, ContextTextEditor.TEXT_CONTEXT_ID, // true); // // editor.setPage(1); // checkActiveContext(globalService, ContextTextEditor.CONTEXT_ID, false); // checkActiveContext(globalService, ContextTextEditor.TEXT_CONTEXT_ID, // true); // // editor.setPage(2); // checkActiveContext(globalService, ContextTextEditor.CONTEXT_ID, true); // editor.removeLastPage(); // checkActiveContext(globalService, ContextTextEditor.CONTEXT_ID, false); // checkActiveContext(globalService, ContextTextEditor.TEXT_CONTEXT_ID, // true); // } // // /** // * Assert if the contextId is active in the contextService. // * // * @param contextService // * @param contextId // * @param isActive // */ // private void checkActiveContext(IContextService contextService, // String contextId, boolean isActive) { // Collection activeContexts = contextService.getActiveContextIds(); // assertEquals(contextId, isActive, activeContexts.contains(contextId)); // } //}